Video coding methods are used to find efficient coding representations for digital video. Unfortunately, this can hardly be achieved without some loss of quality given the large amounts of data involved. Loss of quality often translates into loss of detail. For example, textured regions are perceived softer and small details tend to vanish from the decompressed picture. At high compression ratios, decompressed pictures may even include visible errors, also referred to as “artifacts”. Artifacts are typically the result of quantization in lossy video compression. Compression artifacts may cause parts of the picture, particularly fast moving portions, to be displayed distorted or missing.
In order to reduce the appearance of compression artifacts, non real-time encoding applications (such as DVD authoring) seeking high picture quality often require an operator to manually fine tune the encoder parameters. Such process of manually fine-tuning the encoding parameters is known as assisted re-encoding.
In current DVD production workflow, assisted re-encoding may consume more than sixty percent of the total time required to complete the encoding of a movie title. Furthermore, with the introduction of high definition formats and higher resolution displays, compression artifacts become more visible while nearly lossless compression is often sought.
Turning to FIG. 1, a method for non real-time video encoding with assisted re-encoding is indicated generally by the reference numeral 100. The method 100 includes a start block 105 that passes control to a function block 110. The function block 110 performs an encoding setup, and passes control to a function block 120. The function block 120 performs encoding with respect to a current picture in a video sequence, and passes control to a function block 190 and a loop limit block 130.
The function block 190 stores the bitstream in a buffer, and passes control to a function block 140.
The loop limit block 130 begins a quality check loop that loops over each picture in the video sequence, and passes control to a function block 140.
The function block 140 displays each of the pictures in the video sequence for quality assessment, and passes control to a decision block 150. The decision block 150 determines whether or not the visual quality is satisfactory. If so, then control is passed to a loop limit block 160. Otherwise, control is passed to a function block 180.
The function block 160 ends the loop over each picture in the video sequence, and passes control to an end block 170.
The function block 180 performs a re-encoding setup, and returns control to the function block 120.
Various elements of the method 100 of FIG. 1 will now be further described. The encoder setup is performed at function block 110, typically with the aid of an operator. The encoder setup may involve the setup of the target bit-rate as well as the specification of any set of parameters involved in the encoding process. Function block 120 represents an automated encoding process. This can be single or multi-pass encoding and, in some cases, may comply with an existing video coding standard such as, for example, the International Organization for Standardization/International Electrotechnical Commission (ISO/IEC) Moving Picture Experts Group-4 (MPEG-4) Part 10 Advanced Video Coding (AVC) standard/International Telecommunication Union, Telecommunication Sector (ITU-T) H.264 recommendation (hereinafter the “MPEG-4 AVC standard”), the ISO/IEC MPEG-2 standard, the ITU-T H.263 recommendation, and so forth. The result of the encoding process is saved in memory at the function block 190. After encoding, the operator will proceed to check the visual quality of the encoded stream (function blocks 130 to 160). Visual quality assessment is done in most cases through a graphical display (function block 140) and may involve the decoding of the pictures in the encoded stream. If the operator considers that the quality of a picture or a set of pictures is not satisfactory, he/she may decide to manually test a different encoding setup (function block 180) and proceed to encode again through function block 120. This process is called assisted re-encoding since it requires the intervention of an operator. This process is repeated as necessary until the visual quality is considered satisfactory.
Most applications following the workflow represented by FIG. 1 devote more than sixty percent of the time that it takes to go from function block 100 to function block 170 to the re-encoding process.